home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 099 (1989-05-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 099 (1989-05-15)(Ossowski, Stefan)(DE)(PD).adf / PCQ / Runtime / math.asm < prev    next >
Assembly Source File  |  1989-03-31  |  2KB  |  108 lines

  1.  
  2. *    Math.asm (of PCQ Pascal runtime library)
  3. *    Copyright (c) 1989 Patrick Quaid
  4.  
  5. *    This file has the stubs that implement floating point math.  This
  6. *    is yet another group of routines for which you don't need to open
  7. *    your own library.  The only trick here is that if the divisor in
  8. *    SPDiv is zero, you'll get a run-time error.  If you look at
  9. *    the code for this you may get confused.  It works because it turns
  10. *    out that floating point zero and integer zero have the same
  11. *    representation.
  12.  
  13.     XREF    _p%MathBase
  14.     XREF    _exit
  15.  
  16.     SECTION    MATH
  17.  
  18.     XDEF    _SPFix
  19. _SPFix
  20.     move.l    4(sp),d0
  21.     move.l    _p%MathBase,a6
  22.     jsr    _LVOSPFix(a6)
  23.     rts
  24.  
  25.     XDEF    _SPFloat
  26. _SPFloat
  27.     move.l    4(sp),d0
  28.     move.l    _p%MathBase,a6
  29.     jsr    _LVOSPFlt(a6)
  30.     rts
  31.  
  32.     XDEF    _SPCmp
  33. _SPCmp
  34.     move.l    8(sp),d0
  35.     move.l    4(sp),d1
  36.     move.l    _p%MathBase,a6
  37.     jsr    _LVOSPCmp(a6)
  38.     rts
  39.  
  40.     XDEF    _SPTst
  41. _SPTst
  42.     move.l    4(sp),d1
  43.     move.l    _p%MathBase,a6
  44.     jsr    _LVOSPTst(a6)
  45.     rts
  46.  
  47.     XDEF    _SPAbs
  48. _SPAbs
  49.     move.l    4(sp),d0
  50.     move.l    _p%MathBase,a6
  51.     jsr    _LVOSPAbs(a6)
  52.     rts
  53.  
  54.     XDEF    _SPNeg
  55. _SPNeg
  56.     move.l    4(sp),d0
  57.     move.l    _p%MathBase,a6
  58.     jsr    _LVOSPNeg(a6)
  59.     rts
  60.  
  61.     XDEF    _SPAdd
  62. _SPAdd
  63.     move.l    8(sp),d0
  64.     move.l    4(sp),d1
  65.     move.l    _p%MathBase,a6
  66.     jsr    _LVOSPAdd(a6)
  67.     rts
  68.  
  69.      XDEF    _SPSub
  70. _SPSub
  71.     move.l    8(sp),d0
  72.     move.l    4(sp),d1
  73.     move.l    _p%MathBase,a6
  74.     jsr    _LVOSPSub(a6)
  75.     rts
  76.  
  77.     XDEF    _SPMul
  78. _SPMul
  79.     move.l    8(sp),d0
  80.     move.l    4(sp),d1
  81.     move.l    _p%MathBase,a6
  82.     jsr    _LVOSPMul(a6)
  83.     rts
  84.  
  85.     XDEF    _SPDiv
  86. _SPDiv
  87.     move.l    8(sp),d0
  88.     move.l    4(sp),d1
  89.     bne.s    1$
  90.     move.l    #51,d0
  91.     jmp    _exit
  92. 1$    move.l    _p%MathBase,a6
  93.     jsr    _LVOSPDiv(a6)
  94.     rts
  95.  
  96.     XREF    _LVOSPFix
  97.     XREF    _LVOSPFlt
  98.     XREF    _LVOSPCmp
  99.     XREF    _LVOSPTst
  100.     XREF    _LVOSPAbs
  101.     XREF    _LVOSPNeg
  102.     XREF    _LVOSPAdd
  103.     XREF    _LVOSPSub
  104.     XREF    _LVOSPMul
  105.     XREF    _LVOSPDiv
  106.  
  107.     END
  108.